home *** CD-ROM | disk | FTP | other *** search
/ Amoszine 8 / Amoszine 8 (Disk 2 of 3).adf / Powerbobs.lha / powerbobsv1.0 / examples / power_bubbles.asc < prev    next >
Text File  |  1995-07-04  |  9KB  |  347 lines

  1. 'compile to see the difference ok
  2. 'by andy dobinson.  graphics used with permission by brian bell
  3. '
  4. '*************************************************************************** 
  5. 'Adapted by PowerSoft. 
  6. '*************************************************************************** 
  7. '
  8. 'To see the real speed answer N to wait for Vbl !
  9. '
  10. Load "df0:examples/demo.abk" : Rem demo.abk is supplied, change path !
  11. '
  12. Dim XPOWER25(64),YPOWER25(64),IPOWER25(64),SPDPOWER25(64)
  13. Dim XPOWER50(64),YPOWER50(64),IPOWER50(64),SPDPOWER50(64)
  14. Dim XAMOS25(64),YAMOS25(64),IAMOS25(64),SPDAMOS25(64)
  15. Dim XAMOS50(64),YAMOS50(64),IAMOS50(64),SPDAMOS50(64)
  16. Dim XDRAW25(64),YDRAW25(64),IMDRAW25(64),SPDDRAW25(64)
  17. Global XPOWER25(),YPOWER25(),IPOWER25(),SPDPOWER25()
  18. Global XPOWER50(),YPOWER50(),IPOWER50(),SPDPOWER50()
  19. Global XAMOS25(),YAMOS25(),IAMOS25(),SPDAMOS25()
  20. Global XAMOS50(),YAMOS50(),IAMOS50(),SPDAMOS50()
  21. Global XDRAW25(),YDRAW25(),IMDRAW25(),SPDDRAW25()
  22. Global POWER25#,POWER50#,AMOS25#,AMOS50#,POWER_DRAW25#
  23. Global _RANDOM,VBL,AMOUNT_BOBS
  24. Global AMOUNT_HALF,AM_HALF1
  25. Do 
  26.    Screen Open 0,640,200,4,Hires
  27.    Input "Amount of Bobs, even and max 64 : ";AMOUNT_BOBS
  28.    If AMOUNT_BOBS=0 Then Erase 1 : Erase 10 : End 
  29.    AMOUNT_HALF=AMOUNT_BOBS/2
  30.    AM_HALF1=AMOUNT_HALF+1
  31.    Input "Random bubble size (Y/N) : ";_RAND$
  32.    Input "Wait for Vbl (Y/N) : ";VBL$
  33.    _RAND$=Upper$(_RAND$)
  34.    If _RAND$="Y"
  35.       _RANDOM=True
  36.    Else 
  37.       _RANDOM=False
  38.    End If 
  39.    VBL$=Upper$(VBL$)
  40.    If VBL$="Y"
  41.       VBL=True
  42.    Else 
  43.       VBL=False
  44.    End If 
  45.    Unpack 10 To 0
  46.    Screen Open 1,320,50,4,L
  47.    Screen Display 1,,241,,
  48.    Curs Off : Flash Off 
  49.    Cls 0
  50.    Screen 0
  51.    Make Mask 
  52.    Hide On 
  53.    Double Buffer : Autoback 0 : Bob Update Off : Sprite Update Off 
  54.    For T=1 To AMOUNT_BOBS
  55.       YPOWER25(T)=160
  56.       YPOWER50(T)=160
  57.       YAMOS25(T)=160
  58.       YAMOS50(T)=160
  59.       YDRAW25(T)=150
  60.       X=Rnd(320)
  61.       XPOWER25(T)=X
  62.       XPOWER50(T)=X
  63.       XAMOS25(T)=X
  64.       XAMOS50(T)=X
  65.       XDRAW25(T)=X
  66.       SPEED=Rnd(5)+1
  67.       SPDPOWER25(T)=SPEED
  68.       SPDPOWER50(T)=SPEED
  69.       SPDAMOS25(T)=SPEED
  70.       SPDAMOS50(T)=SPEED
  71.       SPDDRAW25(T)=SPEED
  72.       If _RANDOM
  73.          IMAGE=Rnd(2)+1
  74.       Else 
  75.          IMAGE=1
  76.       End If 
  77.       IPOWER25(T)=IMAGE
  78.       IPOWER50(T)=IMAGE
  79.       IAMOS25(T)=IMAGE
  80.       IAMOS50(T)=IMAGE
  81.       IMDRAW25(T)=IMAGE
  82.    Next T
  83.    Reserve Pbobs AMOUNT_BOBS
  84.    Pbob Dbuf True
  85.    For I=1 To AMOUNT_BOBS : Pbob Height I,23 : Next 
  86.    Multi No 
  87.    POWER25DRAW
  88.    POWER25UPDATE
  89.    POWER50UPDATE
  90.    AMOS25UPDATE
  91.    AMOS50UPDATE
  92.    Multi Yes 
  93.    Autoback 2
  94.    Bob Off 
  95.    Bob Update 
  96.    Cls 0
  97.    Print "Pbob draw   time 25 fps : ";POWER_DRAW25#
  98.    Print "Pbob update time 25 Fps : ";POWER25#
  99.    Print "Pbob update time 50 Fps : ";POWER50#
  100.    Print "Bob  update time 25 Fps : ";AMOS25#
  101.    Print "Bob  update time 50 Fps : ";AMOS50#
  102.    Wait Key 
  103. Loop 
  104. Procedure POWER25UPDATE
  105.    Screen 1
  106.    Locate 0,0
  107.    Print "Update Pbob bubbles 25 fps."
  108.    Print "Press any key."
  109.    Multi Yes 
  110.    Wait Key 
  111.    Multi No 
  112.    Screen 0
  113.    XSPR=0
  114.    TIME=Timer
  115.    For I=1 To 300
  116.       A=1-A
  117.       If A=0
  118.          For T=AM_HALF1 To AMOUNT_BOBS
  119.             Add YPOWER25(T),-SPDPOWER25(T)
  120.             If YPOWER25(T)<1
  121.                YPOWER25(T)=200
  122.                XPOWER25(T)=Rnd(320)
  123.                SPDPOWER25(T)=Rnd(5)+1
  124.                If _RANDOM
  125.                   Add IPOWER25(T),1,1 To 3
  126.                End If 
  127.             End If 
  128.          Next T
  129.          Pbob Varptr(XPOWER25(AM_HALF1)),Varptr(YPOWER25(AM_HALF1)),Varptr(IPOWER25(AM_HALF1)),AM_HALF1 To AMOUNT_BOBS
  130.       Else 
  131.          For T=1 To AMOUNT_HALF
  132.             Add YPOWER25(T),-SPDPOWER25(T)
  133.             If YPOWER25(T)<1
  134.                YPOWER25(T)=200
  135.                XPOWER25(T)=Rnd(320)
  136.                SPDPOWER25(T)=Rnd(5)+1
  137.                If _RANDOM
  138.                   Add IPOWER25(T),1,1 To 3
  139.                End If 
  140.             End If 
  141.          Next T
  142.          Pbob Varptr(XPOWER25(1)),Varptr(YPOWER25(1)),Varptr(IPOWER25(1)),1 To AMOUNT_HALF
  143.          Pbob Update 
  144.          Screen Swap 
  145.       End If 
  146.       Add XSPR,3,128 To 410
  147.       Sprite 0,XSPR,100,2
  148.       Sprite 2,XSPR,150,2
  149.       Sprite 4,XSPR,180,2
  150.       If VBL
  151.          Wait Vbl 
  152.       End If 
  153.       Sprite Update 
  154.    Next 
  155.    POWER25#=Timer-TIME
  156.    Pbob Off 
  157.    Pbob Update 
  158.    Screen Swap 
  159.    Pbob Update 
  160.    Screen Swap 
  161. End Proc
  162. Procedure POWER50UPDATE
  163.    Screen 1
  164.    Locate 0,0
  165.    Print "Update Pbob bubbles 50 fps."
  166.    Print "Press any key."
  167.    Multi Yes 
  168.    Wait Key 
  169.    Multi No 
  170.    Screen 0
  171.    XSPR=0
  172.    TIME=Timer
  173.    For I=1 To 300
  174.       For T=1 To AMOUNT_BOBS
  175.          Add YPOWER50(T),-SPDPOWER50(T)
  176.          If YPOWER50(T)<1
  177.             YPOWER50(T)=200
  178.             XPOWER50(T)=Rnd(240)
  179.             SPDPOWER50(T)=Rnd(5)+1
  180.             If _RANDOM
  181.                Add IPOWER50(T),1,1 To 3
  182.             End If 
  183.          End If 
  184.       Next T
  185.       Pbob Varptr(XPOWER50(1)),Varptr(YPOWER50(1)),Varptr(IPOWER50(1)),1 To AMOUNT_BOBS
  186.       Pbob Update 
  187.       Screen Swap 
  188.       Add XSPR,3,128 To 410
  189.       Sprite 0,XSPR,100,2
  190.       Sprite 2,XSPR,150,2
  191.       Sprite 4,XSPR,180,2
  192.       If VBL
  193.          Wait Vbl 
  194.       End If 
  195.       Sprite Update 
  196.    Next 
  197.    POWER50#=Timer-TIME
  198.    Pbob Off 
  199.    Pbob Update 
  200.    Screen Swap 
  201.    Pbob Update 
  202.    Screen Swap 
  203. End Proc
  204. Procedure AMOS25UPDATE
  205.    Screen 1
  206.    Locate 0,0
  207.    Print "Update Bob bubbles 25 fps."
  208.    Print "Press any key."
  209.    Multi Yes 
  210.    Wait Key 
  211.    Multi No 
  212.    Screen 0
  213.    XSPR=0
  214.    A=0
  215.    TIME=Timer
  216.    For I=1 To 300
  217.       A=1-A
  218.       If A=0
  219.          For T=AM_HALF1 To AMOUNT_BOBS
  220.             Add YAMOS25(T),-SPDAMOS25(T)
  221.             If YAMOS25(T)<1
  222.                YAMOS25(T)=200
  223.                XAMOS25(T)=Rnd(320)
  224.                SPDAMOS25(T)=Rnd(5)+1
  225.                If _RANDOM
  226.                   Add IAMOS25(T),1,1 To 3
  227.                End If 
  228.             End If 
  229.             Bob T,XAMOS25(T),YAMOS25(T),IAMOS25(T)
  230.          Next T
  231.       Else 
  232.          For T=1 To AMOUNT_HALF
  233.             Add YAMOS25(T),-SPDAMOS25(T)
  234.             If YAMOS25(T)<1
  235.                YAMOS25(T)=200
  236.                XAMOS25(T)=Rnd(320)
  237.                SPDAMOS25(T)=Rnd(5)+1
  238.                If _RANDOM
  239.                   Add IAMOS25(T),1,1 To 3
  240.                End If 
  241.             End If 
  242.             Bob T,XAMOS25(T),YAMOS25(T),IAMOS25(T)
  243.          Next T
  244.          Bob Update 
  245.       End If 
  246.       Add XSPR,3,128 To 410
  247.       Sprite 0,XSPR,100,2
  248.       Sprite 2,XSPR,150,2
  249.       Sprite 4,XSPR,180,2
  250.       If VBL
  251.          Wait Vbl 
  252.       End If 
  253.       Sprite Update 
  254.    Next 
  255.    AMOS25#=Timer-TIME
  256. End Proc
  257. Procedure AMOS50UPDATE
  258.    Screen 1
  259.    Locate 0,0
  260.    Print "Update Bob bubbles 50 fps."
  261.    Print "Press any key."
  262.    Multi Yes 
  263.    Wait Key 
  264.    Multi No 
  265.    Screen 0
  266.    XSPR=0
  267.    TIME=Timer
  268.    For I=1 To 300
  269.       For T=1 To AMOUNT_BOBS
  270.          Add YAMOS50(T),-SPDAMOS50(T)
  271.          If YAMOS50(T)<1
  272.             YAMOS50(T)=200
  273.             XAMOS50(T)=Rnd(320)
  274.             SPDAMOS50(T)=Rnd(5)+1
  275.             If _RANDOM
  276.                Add IAMOS50(T),1,1 To 3
  277.             End If 
  278.          End If 
  279.          Bob T,XAMOS50(T),YAMOS50(T),IAMOS50(T)
  280.       Next 
  281.       Bob Update 
  282.       Add XSPR,3,128 To 410
  283.       Sprite 0,XSPR,100,2
  284.       Sprite 2,XSPR,150,2
  285.       Sprite 4,XSPR,180,2
  286.       If VBL
  287.          Wait Vbl 
  288.       End If 
  289.       Sprite Update 
  290.    Next 
  291.    AMOS50#=Timer-TIME
  292. End Proc
  293. Procedure POWER25DRAW
  294.    Screen 1
  295.    Locate 0,0
  296.    Print "Draw Pbob bubbles 25 fps."
  297.    Print "Press any key."
  298.    Multi Yes 
  299.    Wait Key 
  300.    Multi No 
  301.    Screen 0
  302.    XSPR=0
  303.    Pdraw 25fps True
  304.    TIME=Timer
  305.    For I=1 To 300
  306.       A=1-A
  307.       If A=1
  308.          Pbob Clear 1 To AMOUNT_BOBS
  309.          For T=AM_HALF1 To AMOUNT_BOBS
  310.             Add YDRAW25(T),-SPDDRAW25(T)
  311.             If YDRAW25(T)<0
  312.                YDRAW25(T)=200
  313.                XDRAW25(T)=Rnd(320)
  314.                SPDDRAW25(T)=Rnd(4)+1
  315.             End If 
  316.          Next T
  317.          Pbob Varptr(XDRAW25(AM_HALF1)),Varptr(YDRAW25(AM_HALF1)),Varptr(IMDRAW25(AM_HALF1)),AM_HALF1 To AMOUNT_BOBS
  318.          Pbob Draw AM_HALF1 To AMOUNT_BOBS
  319.       Else 
  320.          For T=1 To AMOUNT_HALF
  321.             Add YDRAW25(T),-SPDDRAW25(T)
  322.             If YDRAW25(T)<0
  323.                YDRAW25(T)=200
  324.                XDRAW25(T)=Rnd(320)
  325.                SPDDRAW25(T)=Rnd(4)+1
  326.             End If 
  327.          Next T
  328.          Pbob Varptr(XDRAW25(1)),Varptr(YDRAW25(1)),Varptr(IMDRAW25(1)),1 To AMOUNT_HALF
  329.          Pbob Draw 1 To AMOUNT_HALF
  330.          Screen Swap 
  331.       End If 
  332.       Add XSPR,3,128 To 410
  333.       Sprite 0,XSPR,100,2
  334.       Sprite 2,XSPR,150,2
  335.       Sprite 4,XSPR,180,2
  336.       If VBL
  337.          Wait Vbl 
  338.       End If 
  339.       Sprite Update 
  340.    Next 
  341.    POWER_DRAW25#=Timer-TIME
  342.    Pbob Clear 1 To AMOUNT_BOBS
  343.    Screen Swap 
  344.    Pswap Clear 
  345.    Pbob Clear 1 To AMOUNT_BOBS
  346. End Proc
  347.